home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / QuickDraw3D 1.6 SDK / Mac Interfaces / PInterfaces / QD3DGroup.p < prev    next >
Encoding:
Text File  |  1999-05-18  |  15.8 KB  |  503 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        QD3DGroup.p
  3.  
  4.      Contains:    Q3Group methods        
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.6
  7.                  Release:    QuickTime 4.0
  8.  
  9.      Copyright:    © 1995-1999 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. }
  17. {$IFC UNDEFINED UsingIncludes}
  18. {$SETC UsingIncludes := 0}
  19. {$ENDC}
  20.  
  21. {$IFC NOT UsingIncludes}
  22.  UNIT QD3DGroup;
  23.  INTERFACE
  24. {$ENDC}
  25.  
  26. {$IFC UNDEFINED __QD3DGROUP__}
  27. {$SETC __QD3DGROUP__ := 1}
  28.  
  29. {$I+}
  30. {$SETC QD3DGroupIncludes := UsingIncludes}
  31. {$SETC UsingIncludes := 1}
  32.  
  33. {$IFC UNDEFINED __QD3D__}
  34. {$I QD3D.p}
  35. {$ENDC}
  36.  
  37.  
  38. {$PUSH}
  39. {$ALIGN POWER}
  40. {$LibExport+}
  41.  
  42. {*****************************************************************************
  43.  **                                                                             **
  44.  **                            Group Typedefs                                     **
  45.  **                                                                             **
  46.  ****************************************************************************}
  47. {
  48.  * These flags affect how a group is traversed
  49.  * They apply to when a group is "drawn", "picked", "bounded", "written"
  50.  }
  51.  
  52. TYPE
  53.     TQ3DisplayGroupStateMasks     = SInt32;
  54. CONST
  55.     kQ3DisplayGroupStateNone    = 0;
  56.     kQ3DisplayGroupStateMaskIsDrawn = $01;
  57.     kQ3DisplayGroupStateMaskIsInline = $02;
  58.     kQ3DisplayGroupStateMaskUseBoundingBox = $04;
  59.     kQ3DisplayGroupStateMaskUseBoundingSphere = $08;
  60.     kQ3DisplayGroupStateMaskIsPicked = $10;
  61.     kQ3DisplayGroupStateMaskIsWritten = $20;
  62.  
  63.  
  64. TYPE
  65.     TQ3DisplayGroupState                = UInt32;
  66. {*****************************************************************************
  67.  **                                                                             **
  68.  **                    Group Routines (apply to all groups)                     **
  69.  **                                                                             **
  70.  ****************************************************************************}
  71. { May contain any shared object }
  72. FUNCTION Q3Group_New: TQ3GroupObject; C;
  73. FUNCTION Q3Group_GetType(group: TQ3GroupObject): TQ3ObjectType; C;
  74. FUNCTION Q3Group_AddObject(group: TQ3GroupObject; object: TQ3Object): TQ3GroupPosition; C;
  75. FUNCTION Q3Group_AddObjectBefore(group: TQ3GroupObject; position: TQ3GroupPosition; object: TQ3Object): TQ3GroupPosition; C;
  76. FUNCTION Q3Group_AddObjectAfter(group: TQ3GroupObject; position: TQ3GroupPosition; object: TQ3Object): TQ3GroupPosition; C;
  77. FUNCTION Q3Group_GetPositionObject(group: TQ3GroupObject; position: TQ3GroupPosition; VAR object: TQ3Object): TQ3Status; C;
  78. FUNCTION Q3Group_SetPositionObject(group: TQ3GroupObject; position: TQ3GroupPosition; object: TQ3Object): TQ3Status; C;
  79. FUNCTION Q3Group_RemovePosition(group: TQ3GroupObject; position: TQ3GroupPosition): TQ3Object; C;
  80. FUNCTION Q3Group_GetFirstPosition(group: TQ3GroupObject; VAR position: TQ3GroupPosition): TQ3Status; C;
  81. FUNCTION Q3Group_GetLastPosition(group: TQ3GroupObject; VAR position: TQ3GroupPosition): TQ3Status; C;
  82. FUNCTION Q3Group_GetNextPosition(group: TQ3GroupObject; VAR position: TQ3GroupPosition): TQ3Status; C;
  83. FUNCTION Q3Group_GetPreviousPosition(group: TQ3GroupObject; VAR position: TQ3GroupPosition): TQ3Status; C;
  84. FUNCTION Q3Group_CountObjects(group: TQ3GroupObject; VAR nObjects: UInt32): TQ3Status; C;
  85. FUNCTION Q3Group_EmptyObjects(group: TQ3GroupObject): TQ3Status; C;
  86. {
  87.  *     Typed Access
  88.  }
  89. FUNCTION Q3Group_GetFirstPositionOfType(group: TQ3GroupObject; isType: TQ3ObjectType; VAR position: TQ3GroupPosition): TQ3Status; C;
  90. FUNCTION Q3Group_GetLastPositionOfType(group: TQ3GroupObject; isType: TQ3ObjectType; VAR position: TQ3GroupPosition): TQ3Status; C;
  91. FUNCTION Q3Group_GetNextPositionOfType(group: TQ3GroupObject; isType: TQ3ObjectType; VAR position: TQ3GroupPosition): TQ3Status; C;
  92. FUNCTION Q3Group_GetPreviousPositionOfType(group: TQ3GroupObject; isType: TQ3ObjectType; VAR position: TQ3GroupPosition): TQ3Status; C;
  93. FUNCTION Q3Group_CountObjectsOfType(group: TQ3GroupObject; isType: TQ3ObjectType; VAR nObjects: UInt32): TQ3Status; C;
  94. FUNCTION Q3Group_EmptyObjectsOfType(group: TQ3GroupObject; isType: TQ3ObjectType): TQ3Status; C;
  95. {
  96.  *    Determine position of objects in a group
  97.  }
  98. FUNCTION Q3Group_GetFirstObjectPosition(group: TQ3GroupObject; object: TQ3Object; VAR position: TQ3GroupPosition): TQ3Status; C;
  99. FUNCTION Q3Group_GetLastObjectPosition(group: TQ3GroupObject; object: TQ3Object; VAR position: TQ3GroupPosition): TQ3Status; C;
  100. FUNCTION Q3Group_GetNextObjectPosition(group: TQ3GroupObject; object: TQ3Object; VAR position: TQ3GroupPosition): TQ3Status; C;
  101. FUNCTION Q3Group_GetPreviousObjectPosition(group: TQ3GroupObject; object: TQ3Object; VAR position: TQ3GroupPosition): TQ3Status; C;
  102.  
  103. {*****************************************************************************
  104.  **                                                                             **
  105.  **                            Group Subclasses                                 **
  106.  **                                                                             **
  107.  ****************************************************************************}
  108. { Must contain only lights }
  109. FUNCTION Q3LightGroup_New: TQ3GroupObject; C;
  110. { Must contain only strings }
  111. FUNCTION Q3InfoGroup_New: TQ3GroupObject; C;
  112. {*****************************************************************************
  113.  **                                                                             **
  114.  **                        Display Group Routines                                 **
  115.  **                                                                             **
  116.  ****************************************************************************}
  117. { May contain only drawables }
  118. FUNCTION Q3DisplayGroup_New: TQ3GroupObject; C;
  119. FUNCTION Q3DisplayGroup_GetType(group: TQ3GroupObject): TQ3ObjectType; C;
  120. FUNCTION Q3DisplayGroup_GetState(group: TQ3GroupObject; VAR state: TQ3DisplayGroupState): TQ3Status; C;
  121. FUNCTION Q3DisplayGroup_SetState(group: TQ3GroupObject; state: TQ3DisplayGroupState): TQ3Status; C;
  122. FUNCTION Q3DisplayGroup_Submit(group: TQ3GroupObject; view: TQ3ViewObject): TQ3Status; C;
  123. FUNCTION Q3DisplayGroup_SetAndUseBoundingBox(group: TQ3GroupObject; VAR bBox: TQ3BoundingBox): TQ3Status; C;
  124. FUNCTION Q3DisplayGroup_GetBoundingBox(group: TQ3GroupObject; VAR bBox: TQ3BoundingBox): TQ3Status; C;
  125. FUNCTION Q3DisplayGroup_RemoveBoundingBox(group: TQ3GroupObject): TQ3Status; C;
  126. FUNCTION Q3DisplayGroup_CalcAndUseBoundingBox(group: TQ3GroupObject; computeBounds: TQ3ComputeBounds; view: TQ3ViewObject): TQ3Status; C;
  127.  
  128. {*****************************************************************************
  129.  **                                                                             **
  130.  **        Ordered Display Group                                                  **
  131.  **                                                                             **
  132.  **        Ordered display groups keep objects in order by the type of object:     **
  133.  **                                                                             **
  134.  **        1    kQ3ShapeTypeTransform                                             **
  135.  **        2    kQ3ShapeTypeStyle                                                  **
  136.  **        3    kQ3SetTypeAttribute                                                  **
  137.  **        4    kQ3ShapeTypeShader                                                  **
  138.  **        5    kQ3ShapeTypeCamera                                                  **
  139.  **        6    kQ3ShapeTypeLight                                                  **
  140.  **        7    kQ3ShapeTypeGeometry                                             **
  141.  **        8    kQ3ShapeTypeGroup                                                 **            
  142.  **        9    kQ3ShapeTypeUnknown                                                 **
  143.  **                                                                             **
  144.  **        Within a type, you are responsible for keeping things in order.         **
  145.  **                                                                             **
  146.  **        You may access and/or manipulate the group using the above types      **
  147.  **        (fast), or you may use any parent or leaf class types (slower).         **
  148.  **                                                                             **
  149.  **        Additional types will be added as functionality grows.                 **
  150.  **                                                                             **
  151.  **        The group calls which access by type are much faster for ordered     ** 
  152.  **        display group for the types above.                                     **
  153.  **                                                                             **
  154.  **        N.B. Lights and Cameras in groups are a no-op when drawn and will     **
  155.  **             post an error with the debug libraries.                         **
  156.  **                                                                             **
  157.  ****************************************************************************}
  158. FUNCTION Q3OrderedDisplayGroup_New: TQ3GroupObject; C;
  159. {*****************************************************************************
  160.  **                                                                             **
  161.  **        IO Proxy Display Group                                                  **
  162.  **                                                                             **
  163.  **        IO Proxy display groups are used to place more than one              **
  164.  **        representation of an object in a metafile. For example, if you know     **
  165.  **        another program does not understand NURBPatches but does understand  **
  166.  **        Meshes, you may place a mesh and a NURB Patch in an IO Proxy Group,  **
  167.  **        and the reading program will select the desired representation.         **
  168.  **                                                                             **
  169.  **        Objects in an IO Proxy Display Group are placed in their preferencial**
  170.  **        order, with the FIRST object being the MOST preferred, the LAST      **
  171.  **        object the least preferred.                                             **
  172.  **                                                                             **
  173.  **        The behavior of an IO Proxy Display Group is that when drawn/picked/ **
  174.  **        bounded, the first object in the group that is not "Unknown" is used,**
  175.  **        and the other objects ignored.                                         **
  176.  **                                                                             **
  177.  ****************************************************************************}
  178. FUNCTION Q3IOProxyDisplayGroup_New: TQ3GroupObject; C;
  179. {*****************************************************************************
  180.  **                                                                             **
  181.  **                        Group Extension Definitions                             **
  182.  **                                                                             **
  183.  ****************************************************************************}
  184. {
  185.  *    Searching methods - OPTIONAL
  186.  }
  187.  
  188. CONST
  189.     kQ3XMethodType_GroupAcceptObject = 'gaco';
  190.  
  191.  
  192. TYPE
  193. {$IFC TYPED_FUNCTION_POINTERS}
  194.     TQ3XGroupAcceptObjectMethod = FUNCTION(group: TQ3GroupObject; object: TQ3Object): TQ3Boolean; C;
  195. {$ELSEC}
  196.     TQ3XGroupAcceptObjectMethod = ProcPtr;
  197. {$ENDC}
  198.  
  199.  
  200. CONST
  201.     kQ3XMethodType_GroupAddObject = 'gado';
  202.  
  203.  
  204. TYPE
  205. {$IFC TYPED_FUNCTION_POINTERS}
  206.     TQ3XGroupAddObjectMethod = FUNCTION(group: TQ3GroupObject; object: TQ3Object): TQ3GroupPosition; C;
  207. {$ELSEC}
  208.     TQ3XGroupAddObjectMethod = ProcPtr;
  209. {$ENDC}
  210.  
  211.  
  212. CONST
  213.     kQ3XMethodType_GroupAddObjectBefore = 'gaob';
  214.  
  215.  
  216. TYPE
  217. {$IFC TYPED_FUNCTION_POINTERS}
  218.     TQ3XGroupAddObjectBeforeMethod = FUNCTION(group: TQ3GroupObject; position: TQ3GroupPosition; object: TQ3Object): TQ3GroupPosition; C;
  219. {$ELSEC}
  220.     TQ3XGroupAddObjectBeforeMethod = ProcPtr;
  221. {$ENDC}
  222.  
  223.  
  224. CONST
  225.     kQ3XMethodType_GroupAddObjectAfter = 'gaoa';
  226.  
  227.  
  228. TYPE
  229. {$IFC TYPED_FUNCTION_POINTERS}
  230.     TQ3XGroupAddObjectAfterMethod = FUNCTION(group: TQ3GroupObject; position: TQ3GroupPosition; object: TQ3Object): TQ3GroupPosition; C;
  231. {$ELSEC}
  232.     TQ3XGroupAddObjectAfterMethod = ProcPtr;
  233. {$ENDC}
  234.  
  235.  
  236. CONST
  237.     kQ3XMethodType_GroupSetPositionObject = 'gspo';
  238.  
  239.  
  240. TYPE
  241. {$IFC TYPED_FUNCTION_POINTERS}
  242.     TQ3XGroupSetPositionObjectMethod = FUNCTION(group: TQ3GroupObject; gPos: TQ3GroupPosition; obj: TQ3Object): TQ3Status; C;
  243. {$ELSEC}
  244.     TQ3XGroupSetPositionObjectMethod = ProcPtr;
  245. {$ENDC}
  246.  
  247.  
  248. CONST
  249.     kQ3XMethodType_GroupRemovePosition = 'grmp';
  250.  
  251.  
  252. TYPE
  253. {$IFC TYPED_FUNCTION_POINTERS}
  254.     TQ3XGroupRemovePositionMethod = FUNCTION(group: TQ3GroupObject; position: TQ3GroupPosition): TQ3Object; C;
  255. {$ELSEC}
  256.     TQ3XGroupRemovePositionMethod = ProcPtr;
  257. {$ENDC}
  258.  
  259. {
  260.  *    Searching methods - OPTIONAL - default uses above methods
  261.  }
  262.  
  263. CONST
  264.     kQ3XMethodType_GroupGetFirstPositionOfType = 'gfrt';
  265.  
  266.  
  267. TYPE
  268. {$IFC TYPED_FUNCTION_POINTERS}
  269.     TQ3XGroupGetFirstPositionOfTypeMethod = FUNCTION(group: TQ3GroupObject; isType: TQ3ObjectType; VAR gPos: TQ3GroupPosition): TQ3Status; C;
  270. {$ELSEC}
  271.     TQ3XGroupGetFirstPositionOfTypeMethod = ProcPtr;
  272. {$ENDC}
  273.  
  274.  
  275. CONST
  276.     kQ3XMethodType_GroupGetLastPositionOfType = 'glst';
  277.  
  278.  
  279. TYPE
  280. {$IFC TYPED_FUNCTION_POINTERS}
  281.     TQ3XGroupGetLastPositionOfTypeMethod = FUNCTION(group: TQ3GroupObject; isType: TQ3ObjectType; VAR gPos: TQ3GroupPosition): TQ3Status; C;
  282. {$ELSEC}
  283.     TQ3XGroupGetLastPositionOfTypeMethod = ProcPtr;
  284. {$ENDC}
  285.  
  286.  
  287. CONST
  288.     kQ3XMethodType_GroupGetNextPositionOfType = 'gnxt';
  289.  
  290.  
  291. TYPE
  292. {$IFC TYPED_FUNCTION_POINTERS}
  293.     TQ3XGroupGetNextPositionOfTypeMethod = FUNCTION(group: TQ3GroupObject; isType: TQ3ObjectType; VAR gPos: TQ3GroupPosition): TQ3Status; C;
  294. {$ELSEC}
  295.     TQ3XGroupGetNextPositionOfTypeMethod = ProcPtr;
  296. {$ENDC}
  297.  
  298.  
  299. CONST
  300.     kQ3XMethodType_GroupGetPrevPositionOfType = 'gpvt';
  301.  
  302.  
  303. TYPE
  304. {$IFC TYPED_FUNCTION_POINTERS}
  305.     TQ3XGroupGetPrevPositionOfTypeMethod = FUNCTION(group: TQ3GroupObject; isType: TQ3ObjectType; VAR gPos: TQ3GroupPosition): TQ3Status; C;
  306. {$ELSEC}
  307.     TQ3XGroupGetPrevPositionOfTypeMethod = ProcPtr;
  308. {$ENDC}
  309.  
  310.  
  311. CONST
  312.     kQ3XMethodType_GroupCountObjectsOfType = 'gcnt';
  313.  
  314.  
  315. TYPE
  316. {$IFC TYPED_FUNCTION_POINTERS}
  317.     TQ3XGroupCountObjectsOfTypeMethod = FUNCTION(group: TQ3GroupObject; isType: TQ3ObjectType; VAR nObjects: UInt32): TQ3Status; C;
  318. {$ELSEC}
  319.     TQ3XGroupCountObjectsOfTypeMethod = ProcPtr;
  320. {$ENDC}
  321.  
  322.  
  323. CONST
  324.     kQ3XMethodType_GroupEmptyObjectsOfType = 'geot';
  325.  
  326.  
  327. TYPE
  328. {$IFC TYPED_FUNCTION_POINTERS}
  329.     TQ3XGroupEmptyObjectsOfTypeMethod = FUNCTION(group: TQ3GroupObject; isType: TQ3ObjectType): TQ3Status; C;
  330. {$ELSEC}
  331.     TQ3XGroupEmptyObjectsOfTypeMethod = ProcPtr;
  332. {$ENDC}
  333.  
  334.  
  335. CONST
  336.     kQ3XMethodType_GroupGetFirstObjectPosition = 'gfop';
  337.  
  338.  
  339. TYPE
  340. {$IFC TYPED_FUNCTION_POINTERS}
  341.     TQ3XGroupGetFirstObjectPositionMethod = FUNCTION(group: TQ3GroupObject; object: TQ3Object; VAR gPos: TQ3GroupPosition): TQ3Status; C;
  342. {$ELSEC}
  343.     TQ3XGroupGetFirstObjectPositionMethod = ProcPtr;
  344. {$ENDC}
  345.  
  346.  
  347. CONST
  348.     kQ3XMethodType_GroupGetLastObjectPosition = 'glop';
  349.  
  350.  
  351. TYPE
  352. {$IFC TYPED_FUNCTION_POINTERS}
  353.     TQ3XGroupGetLastObjectPositionMethod = FUNCTION(group: TQ3GroupObject; object: TQ3Object; VAR gPos: TQ3GroupPosition): TQ3Status; C;
  354. {$ELSEC}
  355.     TQ3XGroupGetLastObjectPositionMethod = ProcPtr;
  356. {$ENDC}
  357.  
  358.  
  359. CONST
  360.     kQ3XMethodType_GroupGetNextObjectPosition = 'gnop';
  361.  
  362.  
  363. TYPE
  364. {$IFC TYPED_FUNCTION_POINTERS}
  365.     TQ3XGroupGetNextObjectPositionMethod = FUNCTION(group: TQ3GroupObject; object: TQ3Object; VAR gPos: TQ3GroupPosition): TQ3Status; C;
  366. {$ELSEC}
  367.     TQ3XGroupGetNextObjectPositionMethod = ProcPtr;
  368. {$ENDC}
  369.  
  370.  
  371. CONST
  372.     kQ3XMethodType_GroupGetPrevObjectPosition = 'gpop';
  373.  
  374.  
  375. TYPE
  376. {$IFC TYPED_FUNCTION_POINTERS}
  377.     TQ3XGroupGetPrevObjectPositionMethod = FUNCTION(group: TQ3GroupObject; object: TQ3Object; VAR gPos: TQ3GroupPosition): TQ3Status; C;
  378. {$ELSEC}
  379.     TQ3XGroupGetPrevObjectPositionMethod = ProcPtr;
  380. {$ENDC}
  381.  
  382. {
  383.  *    Group Position Methods
  384.  }
  385.  
  386. CONST
  387.     kQ3XMethodType_GroupPositionSize = 'ggpz';
  388.  
  389.  
  390. TYPE
  391.     TQ3XMethodTypeGroupPositionSize        = UInt32;
  392.  
  393. CONST
  394.     kQ3XMethodType_GroupPositionNew = 'ggpn';
  395.  
  396.  
  397. TYPE
  398. {$IFC TYPED_FUNCTION_POINTERS}
  399.     TQ3XGroupPositionNewMethod = FUNCTION(gPos: UNIV Ptr; object: TQ3Object; initData: UNIV Ptr): TQ3Status; C;
  400. {$ELSEC}
  401.     TQ3XGroupPositionNewMethod = ProcPtr;
  402. {$ENDC}
  403.  
  404.  
  405. CONST
  406.     kQ3XMethodType_GroupPositionCopy = 'ggpc';
  407.  
  408.  
  409. TYPE
  410. {$IFC TYPED_FUNCTION_POINTERS}
  411.     TQ3XGroupPositionCopyMethod = FUNCTION(srcGPos: UNIV Ptr; dstGPos: UNIV Ptr): TQ3Status; C;
  412. {$ELSEC}
  413.     TQ3XGroupPositionCopyMethod = ProcPtr;
  414. {$ENDC}
  415.  
  416.  
  417. CONST
  418.     kQ3XMethodType_GroupPositionDelete = 'ggpd';
  419.  
  420.  
  421. TYPE
  422. {$IFC TYPED_FUNCTION_POINTERS}
  423.     TQ3XGroupPositionDeleteMethod = PROCEDURE(gPos: UNIV Ptr); C;
  424. {$ELSEC}
  425.     TQ3XGroupPositionDeleteMethod = ProcPtr;
  426. {$ENDC}
  427.  
  428. {
  429.  *    View Drawing Helpers
  430.  *    
  431.  *    TQ3XGroupStartIterateMethod
  432.  *
  433.  *        Pass back *object = NULL to NOT call EndIterate iterate
  434.  *        Pass back *object != NULL to draw object
  435.  *         (other side will pass it to EndIterate for deletion!)
  436.  *
  437.  *        *iterator is uninitialized, use for iteration state. Caller should 
  438.  *         ignore it.
  439.  *    
  440.  *    TQ3XGroupEndIterateMethod
  441.  *    
  442.  *        *object is previous object, dispose it or play with it.
  443.  *        Pass back NULL when last iteration has occurred
  444.  *        *iterator is previous value, use for iteration state Caller should 
  445.  *        ignore it.
  446.  }
  447.  
  448. CONST
  449.     kQ3XMethodType_GroupStartIterate = 'gstd';
  450.  
  451.  
  452. TYPE
  453. {$IFC TYPED_FUNCTION_POINTERS}
  454.     TQ3XGroupStartIterateMethod = FUNCTION(group: TQ3GroupObject; VAR iterator: TQ3GroupPosition; VAR object: TQ3Object; view: TQ3ViewObject): TQ3Status; C;
  455. {$ELSEC}
  456.     TQ3XGroupStartIterateMethod = ProcPtr;
  457. {$ENDC}
  458.  
  459.  
  460. CONST
  461.     kQ3XMethodType_GroupEndIterate = 'gitd';
  462.  
  463.  
  464. TYPE
  465. {$IFC TYPED_FUNCTION_POINTERS}
  466.     TQ3XGroupEndIterateMethod = FUNCTION(group: TQ3GroupObject; VAR iterator: TQ3GroupPosition; VAR object: TQ3Object; view: TQ3ViewObject): TQ3Status; C;
  467. {$ELSEC}
  468.     TQ3XGroupEndIterateMethod = ProcPtr;
  469. {$ENDC}
  470.  
  471. {
  472.  *    IO  Helpers
  473.  *    
  474.  *    TQ3XGroupEndReadMethod
  475.  *        Called when a group has been completely read. Group should perform
  476.  *        validation and clean up any reading caches.
  477.  }
  478.  
  479. CONST
  480.     kQ3XMethodType_GroupEndRead    = 'gerd';
  481.  
  482.  
  483. TYPE
  484. {$IFC TYPED_FUNCTION_POINTERS}
  485.     TQ3XGroupEndReadMethod = FUNCTION(group: TQ3GroupObject): TQ3Status; C;
  486. {$ELSEC}
  487.     TQ3XGroupEndReadMethod = ProcPtr;
  488. {$ENDC}
  489.  
  490. FUNCTION Q3XGroup_GetPositionPrivate(group: TQ3GroupObject; position: TQ3GroupPosition): Ptr; C;
  491.  
  492.  
  493. {$ALIGN RESET}
  494. {$POP}
  495.  
  496. {$SETC UsingIncludes := QD3DGroupIncludes}
  497.  
  498. {$ENDC} {__QD3DGROUP__}
  499.  
  500. {$IFC NOT UsingIncludes}
  501.  END.
  502. {$ENDC}
  503.